package com.codrim.cs.data.rpc;

import com.codrim.cs.data.rpc.contants.RpcServiceVersions;
import com.codrim.cs.data.rpc.contants.RpcVersionSuffix;
import com.codrim.cs.data.rpc.dto.param.*;
import com.codrim.cs.data.rpc.dto.result.BillInOutReportDTO;
import com.codrim.cs.data.rpc.dto.result.OfferReportDataDTO;
import com.codrim.cs.data.rpc.dto.result.PagingResultWithSumData;
import com.codrim.cs.data.rpc.dto.result.TopOfferConversionResultDTO;

import javax.validation.Valid;
import java.util.List;

/**
 * 广告报表相关RPC服务接口
 *
 * @author liang.ma  17/08/2017
 */
public interface OfferReportService {

    String RPC_VERSION = RpcServiceVersions.VERSION + RpcVersionSuffix.VERSION_SUFFIX;

    /**
     * 获取符合条件不同纬度的广告报表数据-广告主侧
     *
     * @param param 筛选参数
     * @return 结果
     */
    PagingResultWithSumData<OfferReportDataDTO> offerReportForAdvert(AdvertiserReportParamDTO param);

    /**
     * 获取符合条件不同纬度的广告报表数据-渠道侧
     *
     * @param param 筛选参数
     * @return 结果
     */
    PagingResultWithSumData<OfferReportDataDTO> offerReportForAffiliate(@Valid AffiliateReportParamDTO param);

    /**
     * 返回广告转化Top N数据
     *
     * @param param 查询参数
     * @return 广告转化 TopN数据
     */
    List<TopOfferConversionResultDTO> topOfferConversions(TopOfferConversionParamDTO param);

    PageResult<BillInOutReportDTO> findCsGeneralByParam(BillInOutReportParam param);
}
